package eSchool.Server;

import java.rmi.Remote;
import eSchool.BL.Aluno; 
import eSchool.BL.AlunoInscrito;
import eSchool.BL.Alunos;
import eSchool.BL.AlunosInscritos;
import eSchool.BL.CriteriosPesquisa;
import eSchool.BL.Disciplina;
import eSchool.BL.Disciplinas;
import eSchool.BL.Docente; 
import eSchool.BL.Docentes;
import eSchool.BL.EntidadeBase; 
import eSchool.BL.Funcionario; 
import eSchool.BL.Funcionarios;
import eSchool.BL.DisciplinasInscrito;
import eSchool.BL.DisciplinaInscrito;
import eSchool.BL.Utilizador;
import eSchool.BL.Utilizadores;
import eSchool.Watcher.ISchoolWatcher; 

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
import java.rmi.RemoteException;

public interface ISchoolServer extends Remote {

    public Utilizador logIn (String utilizador, String chave) throws RemoteException;

    public void logOut (String utilizador) throws RemoteException;

    public void logOut (EntidadeBase entidadeBase) throws RemoteException;

    public Aluno getAluno (String numAluno) throws RemoteException;

    public Docente getDocente (int idDocente) throws RemoteException;

    public Docentes getDocentes (CriteriosPesquisa criterios) throws RemoteException;

    public Funcionario getFuncionario (int idFuncionario) throws RemoteException;

    public Funcionarios getFuncionarios (CriteriosPesquisa criterios) throws RemoteException;
    
    public Disciplina getDisciplina (String codDisciplina) throws RemoteException;
    
    public Disciplinas getDisciplinas (CriteriosPesquisa criterios) throws RemoteException;

    public Alunos getAlunos (CriteriosPesquisa criterios) throws RemoteException;
    
    public AlunoInscrito getAlunoInscrito (String numAluno) throws RemoteException;
    
    public AlunosInscritos getAlunosInscritos(CriteriosPesquisa criterios) throws RemoteException;

    public DisciplinaInscrito getDisciplinaInscrito (String codDisciplina, String numAluno) throws RemoteException;
    
    public DisciplinasInscrito getDisciplinasInscrito (CriteriosPesquisa criterios) throws RemoteException;
    
    public Utilizador getUtilizador (String codUtilizador) throws RemoteException;
     
    public Utilizadores getUtilizadores (CriteriosPesquisa criterios) throws RemoteException;

    public void registaWatcher (ISchoolWatcher watcher) throws RemoteException;

    public void gravaAluno(Aluno aluno)throws RemoteException;
    
    public void gravaDocente(Docente docente)throws RemoteException;
    
    public void gravaFuncionario(Funcionario funcionario)throws RemoteException;
    
    public void gravaDisciplina(Disciplina disciplina)throws RemoteException;
    
    public void gravaUtilizador(Utilizador utilizador)throws RemoteException;
    
    public void gravaAlunoInscrito(AlunoInscrito alunoInscrito)throws RemoteException;
    
}

